Communication networks require the use of network switching devices to switch or redirect data as it flows through the network. For example, data that is received at a network element may need to be switched from one transmission path to another so that the data can be routed to its final destination.
FIG. 1 shows a typical switching device 100 used to switch data between transmission paths in a communication network. The switching device 100 includes sixty-four input ports 102 to receive data to be switched. The switching device also includes sixty-four output ports 104 to output the switched data. Thus, the switching device 100 may be referred to as a sixty-four-port full-duplex switch.
Included in the switch device 100 is a fixed length switch fabric 106. The fixed length switch fabric is coupled to the input and output ports and operates to receive data input at a specific input port and to switch the data so that it is output at a specific output port. As a result, it is possible to switch the transmission path of the data. For example, data that is received by the fixed length switching fabric at port 0 may be switched and output at any output port, for example, port 2.
One requirement of the fixed length switching fabric 106 is that the received data be switched in fixed length portions or blocks. For example, the fixed length portion may be a block of fifty data bytes. This requirement may result in several disadvantages that are discussed in the following text.
Assuming that data packet X, shown at 110, is to be input to the switch 100 at port 0 and switched so that the packet X is output from output port 2. Further assume that packet X contains fewer than fifty bytes of data. In order to be switched by the fixed length switching fabric 106, the packet X will be padded, or zero-filled, until the total number of data bytes is equal to fifty. The zero-filled portion x1 is shown at 112. For the purpose of clarity the padding operation is shown being completed before the data enters the switch, however, in some cases the switch 100 may perform the padding operation internally. However, by padding the packet X to form a fifty-byte block, switch inefficiencies are introduced, since now the fixed length switch fabric 106 must switch the zero-filled portion of packet X. The switched packet, including the zero-filled portion is shown at 113 at the output of output port 2. By having to zero fill the packet and then switch the zero filled portion, switch performance is degraded and the available bandwidth of the switch fabric 106 is reduced.
Another problem associated with current fixed length switch fabrics involves the transmission of large data packets. For example, packet 114 represents a large data packet to be switched from port 1 to port 0. The packet 114 is much larger than the required fifty-byte block that is switched by the fixed length switch fabric 106. Another large packet 116 is to be switched from input port 2 to output port 0. The packet 116 is also greater than the required fifty-byte block that is switched by the fixed length switch fabric 106.
In order to switch such large data packets, a segmentation and reassembly (SAR) scheme is used. The SAR scheme involves segmenting the large data packets 114, 116 into smaller portions that are equivalent to the fixed length block size required by the switch, and then sending these smaller portions into the switch fabric. For example, packet 114 has been segmented into segments (or blocks) A, B, and C, where block A is sent into the switch fabric first followed by blocks B and C. Furthermore, since block C happens to be smaller that than fifty-byte block size, block C includes a zero-filled portion 118 so that block C will have a block size that can be switched by the fixed length switch fabric 106 (i.e., fifty bytes).
A similar process is performed on packet 116. Packet 116 is segmented into blocks D and E, where block E is zero-filled as shown at 120. Block D of packet 116 is first sent into the switch fabric followed by block E. Thus, the two packets 114, 116 are sent into the fabric 106 from input ports 1 and 2, respectively, and are both switched to output port 0.
By segmenting the packets 114, 116 and sending these segments into the switch fabric, all of the segments of packets 114, 116 will switch to the output port 0. Unfortunately, segmentation has the problem of re-assembly. To illustrate this, output data 122 represents the result of segmenting and switching packets 114, 116 using the fixed length switch fabric 106. As can be seen from data 122, the segmented blocks of packets 114, 116 are mixed together. For example, block A of packet 114 is followed by block D of packet 116. As a result, it is now required to reassemble the correct segment blocks so that the entire packets 114, 116 can be restored to their correct order and transmitted to their final destination.
In order to reassemble the various segment blocks of the packets 114 and 116, additional header information may have been added to each segment before being input to the switch. Then as the segments emerge from the switch 106, the header information can be used to reassemble the segments in the correct order to form the large data packets. However, the process of adding additional headers and reassembling the segments introduces inefficiencies in the form of wasted switch bandwidth and requires more resources in the form of storage memory. Thus, it can be clearly seen that using a fixed length switch fabric to switch both large and small data packets is very inefficient and results in problems that only grow worst as the transmission speed of the data network increases.
Therefore, what is needed is a system for switching variable length data packets that does not result in efficiencies introduced from zero filling and overcomes the problems resulting from segmentation and reassembly.